From daac9650830719349778416acf5f20a16cd25690 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Wed, 3 May 2006 11:02:30 +0100 Subject: [PATCH] Instead of knowing explicitly about the pygrub entry option, allow passing arbitrary options to the bootloader and deprecate the bootentry option. Signed-off-by: Jeremy Katz --- tools/python/xen/xend/XendBootloader.py | 8 ++++---- tools/python/xen/xend/XendDomainInfo.py | 5 ++++- tools/python/xen/xm/create.py | 17 ++++++++++++++--- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/tools/python/xen/xend/XendBootloader.py b/tools/python/xen/xend/XendBootloader.py index 7f348ddad1..143bf36904 100644 --- a/tools/python/xen/xend/XendBootloader.py +++ b/tools/python/xen/xend/XendBootloader.py @@ -19,13 +19,13 @@ import sxp from XendLogging import log from XendError import VmError -def bootloader(blexec, disk, quiet = 0, entry = None): +def bootloader(blexec, disk, quiet = 0, blargs = None): """Run the boot loader executable on the given disk and return a config image. @param blexec Binary to use as the boot loader @param disk Disk to run the boot loader on. @param quiet Run in non-interactive mode, just booting the default. - @param entry Default entry to boot.""" + @param blargs Arguments to pass to the bootloader.""" if not os.access(blexec, os.X_OK): msg = "Bootloader isn't executable" @@ -48,8 +48,8 @@ def bootloader(blexec, disk, quiet = 0, entry = None): if quiet: args.append("-q") args.append("--output=%s" %(fifo,)) - if entry is not None: - args.append("--entry=%s" %(entry,)) + if blargs is not None: + args.extend(blargs.split()) args.append(disk) try: diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py index a4c1d4a9e4..d88799bc7c 100644 --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -132,6 +132,7 @@ ROUNDTRIPPING_CONFIG_ENTRIES = [ ('memory', int), ('maxmem', int), ('bootloader', str), + ('bootloader_args', str), ('features', str), ] @@ -571,6 +572,7 @@ class XendDomainInfo: defaultInfo('memory', lambda: 0) defaultInfo('maxmem', lambda: 0) defaultInfo('bootloader', lambda: None) + defaultInfo('bootloader_args', lambda: None) defaultInfo('backend', lambda: []) defaultInfo('device', lambda: []) defaultInfo('image', lambda: None) @@ -1630,7 +1632,8 @@ class XendDomainInfo: if disk is None: continue fn = blkdev_uname_to_file(disk) - blcfg = bootloader(self.info['bootloader'], fn, 1) + blcfg = bootloader(self.info['bootloader'], fn, 1, + self.info['bootloader_args']) break if blcfg is None: msg = "Had a bootloader specified, but can't find disk" diff --git a/tools/python/xen/xm/create.py b/tools/python/xen/xm/create.py index 1c52f20a6a..dd7d1675a9 100644 --- a/tools/python/xen/xm/create.py +++ b/tools/python/xen/xm/create.py @@ -122,9 +122,13 @@ gopts.var('bootloader', val='FILE', fn=set_value, default=None, use="Path to bootloader.") +gopts.var('bootargs', val='NAME', + fn=set_value, default=None, + use="Arguments to pass to boot loader") + gopts.var('bootentry', val='NAME', fn=set_value, default=None, - use="Entry to boot via boot loader") + use="DEPRECATED. Entry to boot via boot loader. Use bootargs.") gopts.var('kernel', val='FILE', fn=set_value, default=None, @@ -620,8 +624,13 @@ def run_bootloader(vals): (uname, dev, mode, backend) = vals.disk[0] file = blkif.blkdev_uname_to_file(uname) + if vals.bootentry: + warn("The bootentry option is deprecated. Use bootargs and pass " + "--entry= directly.") + vals.bootargs = "--entry=%s" %(vals.bootentry,) + return bootloader(vals.bootloader, file, not vals.console_autoconnect, - vals.bootentry) + vals.bootargs) def make_config(vals): """Create the domain configuration. @@ -654,8 +663,10 @@ def make_config(vals): config.append(['backend', ['tpmif']]) if vals.bootloader: - config.append(['bootloader', vals.bootloader]) config_image = run_bootloader(vals) + config.append(['bootloader', vals.bootloader]) + if vals.bootargs: + config.append(['bootloader_args'], vals.bootargs) else: config_image = configure_image(vals) config.append(['image', config_image]) -- 2.30.2